import Vue from 'vue'
import axios from 'axios'
import qs from 'qs'
import {
	Message
} from 'element-ui/'

// 基准路径

/* 要用 instance */
var instance = axios.create({
	baseURL: 'http://127.0.0.1:80'
})
/* 请求拦截 */
instance.interceptors.request.use(
	config => {
		let token = window.localStorage.getItem('token');
		console.log("每次请求前读取 Token=" + token)
		if (token) {
			config.headers.Authorization = "Bearer " + token;
		}
		return config;
	},
	error => {
		return Promise.reject(error);
	}
);

/* 响应拦截 */
function doresp(resp) {

}
instance.interceptors.response.use(
	/* 第一个参数是一个匿名函数 作为参数变量 正常相应 HTTP 状态码 200*/
	response => {
		console.log('正常响应 HTTP 状态码:' + response.status);
		// resp.data.code!=200
		return response;
	},
	/* 第二个参数是第二个匿名函数 出错啦，非正常响应 状态不是200的 */
	error => {
		if (error.response) {
			/* 如果 springboot 没有启动,就没有这个对象 */
			switch (error.response.status) {
				case 401:
					Message.error('没有权限');
					break;
				case 403:
					Message.error('你是个小丑没有权限');
					break;
				default:
					Message.error(error.response.status + "系统崩了");
					break;
			}
		}
		return Promise.reject(error.response.data); //继续往下执行
	}

)


//提交方式 get  post post文件 post json
/* get 封装 支持2种方式 */
//请求路径 url /api/adm/clz/findById?id=100 $get("/api/adm/clz/findById?id=100")
/* 请求路径 url /api/adm/clz/findById $get("/api/adm/clz/findByid?id"=100,{id:100}) */
//参数: 对象格式
export let $get = (url, obj) => {
	return instance.get(url, obj)
	/* return instance.get(url, {
		params: obj
	}, head) */
}
/* post 键值对 */
// 请求路径 url ,obj 是对象
export let $postkv = (url, obj) => {
	let kv = qs.stringify(obj) //转成键值对

	let head = {
		headers: {}
	}

	return instance.post(url, kv, head)
}
// post 文件
/* 请求路径 url，obj是对象 */
export let $postf = (url, obj) => {
	return instance.post(url, obj)
}

// post 数组
export let $postjson = (url, obj) => {
	return instance.post(url, obj, {
		headers: {
			'Content-Type': 'application/json;charset=utf8'
		}
	})
}
export let $postkk = (url, obj) => {
	let token = window.localStorage.getItem("token")
	console.log("token:" + token);
	let head = {
		headers: {
			'Authorization': token,
		}
	}

	return instance.post(url, obj, head)
}
